package com.example.service;

import com.example.model.Student;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Optional;

/**
 * 学生服务层接口
 * 仅操作Elasticsearch
 */
public interface StudentService {
    
    /**
     * 保存学生信息
     */
    Student saveStudent(Student student);
    
    /**
     * 根据ID查找学生
     */
    Optional<Student> findById(String id);
    
    /**
     * 获取所有学生（分页）
     */
    Page<Student> findAllStudents(Pageable pageable);
    
    /**
     * 根据姓名搜索学生（使用ES全文搜索）
     */
    List<Student> searchByName(String name);
    
    /**
     * 根据年龄范围查找学生
     */
    List<Student> findByAgeRange(Integer minAge, Integer maxAge);
    
    /**
     * 根据学号查找学生
     */
    Student findByNumber(String number);
    
    /**
     * 根据父亲姓名查找学生
     */
    List<Student> findByFatherName(String fatherName);
    
    /**
     * 根据母亲姓名查找学生
     */
    List<Student> findByMotherName(String motherName);
    
    /**
     * 更新学生信息
     */
    Student updateStudent(Student student);
    
    /**
     * 删除学生信息
     */
    void deleteStudent(String id);
    
    /**
     * 统计学生总数
     */
    long countStudents();
}
